using System;
using System.Collections.Generic;
using System.Text;

using BVMB.DataLayer.Base;

namespace BVMB.DataLayer.ManagerObjects
{
    public interface IManagerFactory
    {
		// Get Methods
		IBaoCaoDoanhThuNamManager GetBaoCaoDoanhThuNamManager();
		IBaoCaoDoanhThuNamManager GetBaoCaoDoanhThuNamManager(INHibernateSession session);
		IBaoCaoThangManager GetBaoCaoThangManager();
		IBaoCaoThangManager GetBaoCaoThangManager(INHibernateSession session);
		IChiTietBaoCaoThangManager GetChiTietBaoCaoThangManager();
		IChiTietBaoCaoThangManager GetChiTietBaoCaoThangManager(INHibernateSession session);
		IChuyenBayManager GetChuyenBayManager();
		IChuyenBayManager GetChuyenBayManager(INHibernateSession session);
		ICtchuyenbayManager GetCtchuyenbayManager();
		ICtchuyenbayManager GetCtchuyenbayManager(INHibernateSession session);
		IHangGheManager GetHangGheManager();
		IHangGheManager GetHangGheManager(INHibernateSession session);
		IHangVeManager GetHangVeManager();
		IHangVeManager GetHangVeManager(INHibernateSession session);
		IHanhKhachManager GetHanhKhachManager();
		IHanhKhachManager GetHanhKhachManager(INHibernateSession session);
		IPhieuDatVeManager GetPhieuDatVeManager();
		IPhieuDatVeManager GetPhieuDatVeManager(INHibernateSession session);
		ISanBayManager GetSanBayManager();
		ISanBayManager GetSanBayManager(INHibernateSession session);
		IThamSoManager GetThamSoManager();
		IThamSoManager GetThamSoManager(INHibernateSession session);
		IVeManager GetVeManager();
		IVeManager GetVeManager(INHibernateSession session);
    }

    public class ManagerFactory : IManagerFactory
    {
        #region Constructors

        public ManagerFactory()
        {
        }

        #endregion

        #region Get Methods

		public IBaoCaoDoanhThuNamManager GetBaoCaoDoanhThuNamManager()
        {
            return new BaoCaoDoanhThuNamManager();
        }
		public IBaoCaoDoanhThuNamManager GetBaoCaoDoanhThuNamManager(INHibernateSession session)
        {
            return new BaoCaoDoanhThuNamManager(session);
        }
		public IBaoCaoThangManager GetBaoCaoThangManager()
        {
            return new BaoCaoThangManager();
        }
		public IBaoCaoThangManager GetBaoCaoThangManager(INHibernateSession session)
        {
            return new BaoCaoThangManager(session);
        }
		public IChiTietBaoCaoThangManager GetChiTietBaoCaoThangManager()
        {
            return new ChiTietBaoCaoThangManager();
        }
		public IChiTietBaoCaoThangManager GetChiTietBaoCaoThangManager(INHibernateSession session)
        {
            return new ChiTietBaoCaoThangManager(session);
        }
		public IChuyenBayManager GetChuyenBayManager()
        {
            return new ChuyenBayManager();
        }
		public IChuyenBayManager GetChuyenBayManager(INHibernateSession session)
        {
            return new ChuyenBayManager(session);
        }
		public ICtchuyenbayManager GetCtchuyenbayManager()
        {
            return new CtchuyenbayManager();
        }
		public ICtchuyenbayManager GetCtchuyenbayManager(INHibernateSession session)
        {
            return new CtchuyenbayManager(session);
        }
		public IHangGheManager GetHangGheManager()
        {
            return new HangGheManager();
        }
		public IHangGheManager GetHangGheManager(INHibernateSession session)
        {
            return new HangGheManager(session);
        }
		public IHangVeManager GetHangVeManager()
        {
            return new HangVeManager();
        }
		public IHangVeManager GetHangVeManager(INHibernateSession session)
        {
            return new HangVeManager(session);
        }
		public IHanhKhachManager GetHanhKhachManager()
        {
            return new HanhKhachManager();
        }
		public IHanhKhachManager GetHanhKhachManager(INHibernateSession session)
        {
            return new HanhKhachManager(session);
        }
		public IPhieuDatVeManager GetPhieuDatVeManager()
        {
            return new PhieuDatVeManager();
        }
		public IPhieuDatVeManager GetPhieuDatVeManager(INHibernateSession session)
        {
            return new PhieuDatVeManager(session);
        }
		public ISanBayManager GetSanBayManager()
        {
            return new SanBayManager();
        }
		public ISanBayManager GetSanBayManager(INHibernateSession session)
        {
            return new SanBayManager(session);
        }
		public IThamSoManager GetThamSoManager()
        {
            return new ThamSoManager();
        }
		public IThamSoManager GetThamSoManager(INHibernateSession session)
        {
            return new ThamSoManager(session);
        }
		public IVeManager GetVeManager()
        {
            return new VeManager();
        }
		public IVeManager GetVeManager(INHibernateSession session)
        {
            return new VeManager(session);
        }
        
        #endregion
    }
}
